﻿/* 
 * Copyright (c) 2011-13 Andrey Bulygin
 * 
 * This file is part of Interceptor.
 * Interceptor is free software: you can redistribute it and/or modify it under the terms of the GNU 
 * Library General Public License as published by the Free Software Foundation, either version 3 of the 
 * License, or (at your option) any later version.
 * 
 * Interceptor is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 
 * the GNU Library General Public License for more details. You should have received a copy of the GNU 
 * Library General Public License along with Interceptor. If not, write to the Free Software Foundation, Inc., 59 
 * Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;

namespace Interceptor
{
	[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
	public class FilterByAttributeAttribute: Attribute
	{
		public enum FilteringType
		{
			UseTypeArray,
			UseMethodBasedFilter
		}
		public FilterByAttributeAttribute(params Type[] attributes)
		{
			Attributes = attributes;
			FiltersNames = new string[0];
		}
		public FilterByAttributeAttribute()
		{
			Attributes = new Type[0];
			FiltersNames = new string[0];
		}
		public FilterByAttributeAttribute(params string[] filterName)
		{
			Attributes = new Type[0];
			FiltersNames = filterName;
		}
		public string[] FiltersNames { get; private set; }
		public Type[] Attributes { get; private set; }
		public FilteringType Type
		{ 
			get 
			{
				return Attributes.Length != 0
									? FilteringType.UseTypeArray
									: FilteringType.UseMethodBasedFilter;
			} 
		}
	}
}
